package cn.qicaiwang.open.admin.controller.user;


import cn.qicaiwang.open.admin.entity.UserEntity;
import cn.qicaiwang.open.admin.server.UserService;
import cn.qicaiwang.open.common.response.ResponseResult;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/user")
public class AdminUserController {

    @Autowired
    private UserService userService;

    /**
     * 获取用户列表
     *
     * @return 用户列表的ResponseResult
     */
    @GetMapping("/list")
    public ResponseResult<List<UserEntity>> list() {
        QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
        // 可以在这里添加查询条件，例如：queryWrapper.eq("status", "active");
        List<UserEntity> userList = userService.list(queryWrapper);
        return ResponseResult.ok(userList);
    }

    /**
     * 分页获取用户列表
     *
     * @param currentPage 当前页码
     * @param pageSize    每页显示数量
     * @return 分页结果的ResponseResult
     */
    @GetMapping("/page")
    public ResponseResult<Page<UserEntity>> page(@RequestParam int currentPage, @RequestParam int pageSize) {
        QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
        // 可以在这里添加查询条件，例如：queryWrapper.like("username", "admin");
        Page<UserEntity> userPage = userService.page(new Page<>(currentPage, pageSize), queryWrapper);
        return ResponseResult.ok(userPage);
    }

    /**
     * 保存用户信息
     *
     * @param userEntity 用户实体
     * @return 保存结果的ResponseResult
     */
    @PostMapping("/save")
    public ResponseResult<Boolean> save(@RequestBody UserEntity userEntity) {
        boolean result = userService.save(userEntity);
        return result ? ResponseResult.ok(result) : ResponseResult.error("保存失败");
    }

    /**
     * 更新用户信息
     *
     * @param userEntity 用户实体（需包含ID以进行更新）
     * @return 更新结果的ResponseResult
     */
    @PostMapping("/update")
    public ResponseResult<Boolean> update(@RequestBody UserEntity userEntity) {
        boolean result = userService.updateById(userEntity);
        return result ? ResponseResult.ok(result) : ResponseResult.error("更新失败");
    }

    /**
     * 删除用户信息
     *
     * @param id 用户ID
     * @return 删除结果的ResponseResult
     */
    @DeleteMapping("/delete/{id}")
    public ResponseResult<Boolean> delete(@PathVariable Integer id) {
        boolean result = userService.removeById(id);
        return result ? ResponseResult.ok(result) : ResponseResult.error("删除失败");
    }

    /**
     * 根据ID获取用户信息
     *
     * @param id 用户ID
     * @return 用户实体的ResponseResult
     */
    @GetMapping("/{id}")
    public ResponseResult<UserEntity> getById(@PathVariable Integer id) {
        UserEntity userEntity = userService.getById(id);
        return userEntity != null ? ResponseResult.ok(userEntity) : ResponseResult.error("用户不存在");
    }
}